package com.zhang.zxx.easyexcel.pojo;

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.converters.string.StringImageConverter;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.File;
import java.io.InputStream;
import java.net.URL;

/**
 * ImageData:构建向Excel中写图片的类 支持5种数据类型的图片类型
 * 1. 图片可以是一个File格式
 * 2. 图片可以是一个InputStream输入流的方式
 * 3. 图片可以是一个byte[]数组的方式
 * 4. 图片可以是 一个网络的java.net.URL对象方式
 * 5. 图片也可以是一个String类型方式(当是String类型是，需要StringImageConverter类型转换器)
 * 说明:@ContentRowHeight(100)  // 内容高度
 * 说明:@ColumnWidth(100 / 8)   // 列宽
 * @author zhangxiaoxiang
 * @date 2021/1/13
 */
@ContentRowHeight(100)
@ColumnWidth(100 / 8)
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
public class ImageData {
	/**
	 *  使用抽象文件表示一个图片
	 */
	private File file;
	/**
	 * 使用输入流保存一个图片
	 */
	private InputStream inputStream;
	/**
	 * 当使用String类型保存一个图片的时候需要使用StringImageConverter转换器
	 */
	@ExcelProperty(converter = StringImageConverter.class)
	private String string;
	/**
	 * 使用二进制数据保存为一个图片
	 */
	private byte[] byteArray;
	/**
	 * 使用网络链接保存一个图片
	 */
	private URL url;
}